package com.stu.design_patterns.factory._01_simple_factory;

public class Main {
  public static void main(String[] args) {
    // test1();
    test2();
  }

  // 测试不使用工厂时：
  // 客户类与产品实现类耦合，如果我把产品实现类的名字改了，那么客户类必须做出相应更改
  public static void test1() {
    Car car1 = new Audi();
    car1.run();
    Car car2 = new Benz();
    car2.run();
  }

  // 测试使用简单工厂（方式1）时：
  // 客户类与产品实现类解耦
  public static void test2() {
    Car car1 = CarFactory.getInstance("Audi");
    car1.run();
    Car car2 = CarFactory.getInstance("Benz");
    car2.run();
  }

  // 测试使用简单工厂（方式2）时：
  public static void test3() {
    Car car1 = CarFactory1.getAudi();
    car1.run();
    Car car2 = CarFactory1.getBenz();
    car2.run();
  }
}
